Identifying groups for a social networking system user based on likelihoods of the user interacting with various groups

ABSTRACT

A social networking system selects a set of groups for presentation to a user of the social networking system. To select groups, the social networking system determining scores for various groups representing a likelihood of the user interacting with the groups. When determining a score for a group, the social networking system accounts for a likelihood of the user providing content to the group as well as the user accessing or viewing content associated with the group. Based on the scores, one or more groups are selected and presented to the user. Additionally, the social networking system may apply one or more diversity rules so that the selected groups have a variety of characteristics.

BACKGROUND

This disclosure relates generally to social networking systems, and morespecifically to identifying groups of users to a social networkingsystem user.

An online system, such as a social networking system, allows its usersto connect to and communicate with other online system users. Users maycreate profiles on an online system that are tied to their identitiesand include information about the users, such as interests anddemographic information. The users may be individuals or entities suchas corporations or charities.

Additionally, a social networking system may maintain groups of users,allowing a user to provide content to a group for presentation to eachuser included in the group. A group may be associated with a topic, alocation, or with any other suitable characteristic, so a user includedin the group may more easily view or share content associated with thecharacteristic associated with the group. However, as a socialnetworking system may maintain a large number of groups, a user mayexpend significant time identifying groups associated withcharacteristics of interest to the user. This decreases the likelihoodof the user identifying groups of interest to the user, which maydecrease the amount of interaction between the user and the socialnetworking system.

SUMMARY

Users of a social networking system communicate messages or othercontent to each other via the social networking system. To simplifycommunication of content, the social networking system may maintainvarious groups each including one or more users of the social networkingsystem. A user may communicate content to a group, which causes thesocial networking system to present the content to the users included inthe group. A user may provide content to a group including the user fordistribution to other users in the group or may view or otherwise accesscontent associated with the including the user.

To allow a user to more easily identify a group of interest to the user,the social networking system determines a score for various groupsmaintained by the social networking system. The social networking systemmay identify a set of groups as groups with which the user has at leasta threshold likelihood of interacting within a time interval anddetermine scores associated with each group. For example, the set ofgroups includes groups with which the user has at least a thresholdlikelihood of interacting during a 24 hour interval. To determine thelikelihood of a user interacting with a group within the time interval,the social networking system identifies characteristics associated withthe group (e.g., a topic associated with the group, a locationassociated with the group, etc.) and identifies one or more groups withwhich the user previously interacted having characteristics matching, orsimilar to, the characteristics associated with the group. Based oninteractions where the user accessed content associated with one or moreof the identified groups and interactions where the user providedcontent to one or more of the identified groups, the social networkingsystem determines the likelihood of the user interacting with the group.For example, the social networking system applies a model to theinteractions where the user accessed content associated with one or moreof the identified groups and the interactions where the user providedcontent to one or more of the identified groups to determine a frequencywith which the user performs an interaction with the identified groups.The likelihood of the user interacting with the group during a timeinterval is based on the determined frequency, and if the likelihood isat least a threshold value, the social networking system includes thegroup in the set of groups. Characteristics of the group and the one ormore identified groups having matching or similar characteristics of thegroup may also be used to determine the likelihood of the userinteracting with the group during the time interval.

A score for a group is based on a model determining a likelihood of theuser interacting with the group within a specified time interval. Forexample, the score associated with the group represents a likelihood ofthe user interacting with the group during a 24-hour interval. Variousinteractions between the user and other groups maintained by the socialnetworking system are used to determine the score for a group. Forexample, the user's interactions with groups having at least a thresholdnumber of characteristics matching or similar to a group are used todetermine the score for the group. Examples of interactions used todetermine the score for a group include the user providing one or morecontent items to an additional group with similar characteristics to thegroup for presentation to users associated with the additional group,the user commenting on content items associated with an additional groupwith similar characteristics to the group, the user sharing contentitems associated with an additional group having similar characteristicsto the group, and the user indicating a preference for a content itemassociated with an additional group having similar characteristics tothe group. Additionally, the score associated with the group is based inpart on interactions where the user accessed content items associatedwith one or more groups having similar characteristics to the group. Forexample, if the user views a content item associated with an additionalgroup having similar characteristics to the group for at least athreshold length of time, the social networking system identifies aninteraction where the user has viewed the content item. A frequency withwhich the user views content items associated with groups having similarcharacteristics to the group or a number of times the user views contentitems associated with groups having similar characteristics to the groupis used when determining the score for the group. Accounting forinteractions where the user provides content to groups as well asinteractions where the user passively views content associated withgroups increases the likelihood of the social networking systemidentifying a group with which the user is likely to interact, even bypassively consuming content items associated with the group.

Based on the scores associated with various groups, the socialnetworking system selects one or more groups for identification to theuser. For example, the social networking system ranks groups based ontheir associated scores and selects one or more groups having at least athreshold position in the ranking. Alternatively, the social networkingsystem selects one or more groups associated with at least a thresholdscore. Information describing the selected groups is communicated fromthe social networking system to a client device associated with theuser. The information may be presented in an order based at least inpart on the scores associated with selected groups to allow the user tomore easily identify selected groups with higher scores, which increasesthe likelihood of the user identifying a group with which the user willsubsequently interact.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system environment in which a socialnetworking system operates, in accordance with an embodiment.

FIG. 2 is a block diagram of a social networking system, in accordancewith an embodiment.

FIG. 3 is a flowchart of a method for identifying groups of users to arequesting user of a social networking system, in accordance with anembodiment.

FIG. 4 is a process flow diagram of the social networking systemidentifying sets of candidate groups from stored groups, in accordancewith an embodiment.

FIG. 5A and FIG. 5B are example interfaces for presenting selectedgroups to a user of the social networking system, in accordance with anembodiment.

The figures depict various embodiments for purposes of illustrationonly. One skilled in the art will readily recognize from the followingdiscussion that alternative embodiments of the structures and methodsillustrated herein may be employed without departing from the principlesdescribed herein.

DETAILED DESCRIPTION

System Architecture

FIG. 1 is a block diagram of a system environment 100 for a socialnetworking system 140, such as a social networking system. The systemenvironment 100 shown by FIG. 1 comprises one or more client devices110, a network 120, one or more third-party systems 130, one or moremachines 135, and the social networking system 140. In alternativeconfigurations, different and/or additional components may be includedin the system environment 100. The embodiments described herein may beadapted to online systems that are not social networking systems.

The client devices 110 are one or more computing devices capable ofreceiving user input as well as transmitting and/or receiving data viathe network 120. In one embodiment, a client device 110 is aconventional computer system, such as a desktop or a laptop computer.Alternatively, a client device 110 may be a device having computerfunctionality, such as a personal digital assistant (PDA), a mobiletelephone, a smartphone or another suitable device. A client device 110is configured to communicate via the network 120. In one embodiment, aclient device 110 executes an application allowing a user of the clientdevice 110 to interact with the social networking system 140. Forexample, a client device 110 executes a browser application to enableinteraction between the client device 110 and the social networkingsystem 140 via the network 120. In another embodiment, a client device110 interacts with the social networking system 140 through anapplication programming interface (API) running on a native operatingsystem of the client device 110, such as IOS® or ANDROID™.

The client devices 110 are configured to communicate via the network120, which may comprise any combination of local area and/or wide areanetworks, using both wired and/or wireless communication systems. In oneembodiment, the network 120 uses standard communications technologiesand/or protocols. For example, the network 120 includes communicationlinks using technologies such as Ethernet, 802.11, worldwideinteroperability for microwave access (WiMAX), 3G, 4G, code divisionmultiple access (CDMA), digital subscriber line (DSL), etc. Examples ofnetworking protocols used for communicating via the network 120 includemultiprotocol label switching (MPLS), transmission controlprotocol/Internet protocol (TCP/IP), hypertext transport protocol(HTTP), simple mail transfer protocol (SMTP), and file transfer protocol(FTP). Data exchanged over the network 120 may be represented using anysuitable format, such as hypertext markup language (HTML) or extensiblemarkup language (XML). In some embodiments, all or some of thecommunication links of the network 120 may be encrypted using anysuitable technique or techniques.

One or more third party systems 130 may be coupled to the network 120for communicating with the social networking system 140, which isfurther described below in conjunction with FIG. 2. In one embodiment, athird party system 130 is an application provider communicatinginformation describing applications for execution by a client device 110or communicating data to client devices 110 for use by an applicationexecuting on the client device. In other embodiments, a third partysystem 130 provides content or other information for presentation via aclient device 110. A third party system 130 may also communicateinformation to the social networking system 140, such as advertisements,content, or information about an application provided by the third partysystem 130.

FIG. 2 is a block diagram of an architecture of the social networkingsystem 140. The social networking system 140 shown in FIG. 2 includes auser profile store 205, a content store 210, an action logger 215, anaction log 220, an edge store 225, a group store 230, a topic extractionengine 235, a group selection module 240 and a web server 245. In otherembodiments, the social networking system 140 may include additional,fewer, or different components for various applications. Conventionalcomponents such as network interfaces, security functions, loadbalancers, failover servers, management and network operations consoles,and the like are not shown so as to not obscure the details of thesystem architecture.

Each user of the social networking system 140 is associated with a userprofile, which is stored in the user profile store 205. A user profileincludes declarative information about the user that was explicitlyshared by the user and may also include profile information inferred bythe social networking system 140. In one embodiment, a user profileincludes multiple data fields, each describing one or more attributes ofthe corresponding online system user. Examples of information stored ina user profile include biographic, demographic, and other types ofdescriptive information, such as work experience, educational history,gender, hobbies or preferences, location and the like. A user profilemay also store other information provided by the user, for example,images or videos. In certain embodiments, images of users may be taggedwith information identifying the social networking system usersdisplayed in an image. A user profile in the user profile store 205 mayalso maintain references to actions by the corresponding user performedon content items in the content store 210 and stored in the action log220.

While user profiles in the user profile store 205 are frequentlyassociated with individuals, allowing individuals to interact with eachother via the social networking system 140, user profiles may also bestored for entities such as businesses or organizations. This allows anentity to establish a presence on the social networking system 140 forconnecting and exchanging content with other online system users. Theentity may post information about itself, about its products or provideother information to users of the online system using a brand pageassociated with the entity's user profile. Other users of the onlinesystem may connect to the brand page to receive information posted tothe brand page or to receive information from the brand page. A userprofile associated with the brand page may include information about theentity itself, providing users with background or informational dataabout the entity.

The content store 210 stores objects that each represent various typesof content. Examples of content represented by an object include a pagepost, a status update, a photograph, a video, a link, a shared contentitem, a gaming application achievement, a check-in event at a localbusiness, a page (e.g., brand page), or any other type of content.Online system users may create objects stored by the content store 210,such as status updates, photos tagged by users to be associated withother objects in the social networking system 140, events, groups orapplications. In some embodiments, objects are received from third-partyapplications or third-party applications separate from the socialnetworking system 140. In one embodiment, objects in the content store210 represent single pieces of content, or content “items.” A contentidentifier is associated with each content item to allow the socialnetworking system 140 to more easily identify and retrieve variouscontent items. Hence, online system users are encouraged to communicatewith each other by posting text and content items of various types ofmedia to the social networking system 140 through various communicationchannels. This increases the amount of interaction of users with eachother and increases the frequency with which users interact within thesocial networking system 140.

The action logger 215 receives communications about user actionsinternal to and/or external to the social networking system 140,populating the action log 220 with information about user actions.Examples of actions include adding a connection to another user, sendinga message to another user, uploading an image, reading a message fromanother user, viewing content associated with another user, andattending an event posted by another user. In addition, a number ofactions may involve an object and one or more particular users, so theseactions are associated with those users as well and stored in the actionlog 220.

The action log 220 may be used by the social networking system 140 totrack user actions on the social networking system 140, as well asactions on third party systems 130 that communicate information to thesocial networking system 140. Users may interact with various objects onthe social networking system 140, and information describing theseinteractions is stored in the action log 220. Examples of interactionswith objects include: commenting on posts, sharing links, checking-in tophysical locations via a mobile device, accessing content items, and anyother suitable interactions. Additional examples of interactions withobjects on the social networking system 140 that are included in theaction log 220 include: commenting on a photo album, communicating witha user, establishing a connection with an object, joining an event,joining a group, creating an event, authorizing an application, using anapplication, expressing a preference for an object (“liking” theobject), and engaging in a transaction. Additionally, the action log 220may record a user's interactions with advertisements on the socialnetworking system 140 as well as with other applications operating onthe social networking system 140. In some embodiments, data from theaction log 220 is used to infer interests or preferences of a user,augmenting the interests included in the user's user profile andallowing a more complete understanding of user preferences.

The action log 220 may also store user actions taken on a third partysystem 130, such as an external website, and communicated to the socialnetworking system 140. For example, an e-commerce website may recognizea user of a social networking system 140 through a social plug-inenabling the e-commerce website to identify the user of the socialnetworking system 140. Because users of the social networking system 140are uniquely identifiable, e-commerce websites, such as in the precedingexample, may communicate information about a user's actions outside ofthe social networking system 140 to the social networking system 140 forassociation with the user. Hence, the action log 220 may recordinformation about actions users perform on a third party system 130,including webpage viewing histories, advertisements that were engaged,purchases made, and other patterns from shopping and buying.

In one embodiment, the edge store 225 stores information describingconnections between users and other objects on the social networkingsystem 140 as edges. Some edges may be defined by users, allowing usersto specify their relationships with other users. For example, users maygenerate edges with other users that parallel the users' real-liferelationships, such as friends, co-workers, partners, and so forth. Anedge between a user and another user may be associated with a connectionstrength specified by the user and providing information about arelationship between the user and the other user. For example,connections between a user and other users with which the user has aclose relationship, such as family members, have relatively highconnection strengths, while connections between the user and additionalusers with which the user has a more distant relationship have lowerconnection strengths. In some embodiments, a user selects fromconnection strengths associated with different types of relationships(e.g., family members, co-workers, friends, partners, etc.) whenspecifying a connection with another user, and the edge store 225associates a selected connection strength with an edge describing theconnection. Other edges are generated when users interact with objectsin the social networking system 140, such as expressing interest in apage on the social networking system 140, sharing a link with otherusers of the social networking system 140, and commenting on posts madeby other users of the social networking system 140.

In one embodiment, an edge may include various features eachrepresenting characteristics of interactions between users, interactionsbetween users and objects, or interactions between objects. For example,features included in an edge describe rate of interaction between twousers, how recently two users have interacted with each other, the rateor amount of information retrieved by one user about an object, or thenumber and types of comments posted by a user about an object. Thefeatures may also represent information describing a particular objector user. For example, a feature may represent the level of interest thata user has in a particular topic, the rate at which the user logs intothe social networking system 140, or information describing demographicinformation about a user. Each feature may be associated with a sourceobject or user, a target object or user, and a feature value. A featuremay be specified as an expression based on values describing the sourceobject or user, the target object or user, or interactions between thesource object or user and target object or user; hence, an edge may berepresented as one or more feature expressions.

The edge store 225 also stores information about edges, such as affinityscores for objects, interests, and other users. Affinity scores, or“affinities,” may be computed by the social networking system 140 overtime to approximate a user's interest in an object or in another user inthe social networking system 140 based on the actions performed by theuser. A user's affinity may be computed by the social networking system140 over time to approximate a user's interest in an object, a topic, oranother user in the social networking system 140 based on actionsperformed by the user. Computation of affinity is further described inU.S. patent application Ser. No. 12/978,265, filed on Dec. 23, 2010,U.S. patent application Ser. No. 13/690,254, filed on Nov. 30, 2012,U.S. patent application Ser. No. 13/689,969, filed on Nov. 30, 2012, andU.S. patent application Ser. No. 13/690,088, filed on Nov. 30, 2012,each of which is hereby incorporated by reference in its entirety.Multiple interactions between a user and a specific object may be storedas a single edge in the edge store 225, in one embodiment.Alternatively, each interaction between a user and a specific object isstored as a separate edge. In some embodiments, connections betweenusers may be stored in the user profile store 205, or the user profilestore 205 may access the edge store 225 to determine connections betweenusers.

The group store 230 includes information identifying various groups ofusers. A group is associated with a group identifier stored by the groupscore 230 that uniquely identifies the group. One or more identifiersassociated with users are associated with the group identifier toidentify users of social networking system 140 included in the group.Other information may be associated with a group identifier, such as aname identifying a group corresponding to the group identifier, adescription associated with the group, descriptive informationassociated with the group (e.g., a location), or other suitableinformation. Additionally, one or more content identifiers specifyingcontent items are associated with a group identifier to identify contentitems associated with a group associated with the group identifier. If acontent item, such as a message, is communicated to a group, the messageis communicated to users associated with the group. Hence, maintaining agroup allows content to be more easily communicated to users within thegroup by allowing content to be communicated to the group rather thancommunicated to various individual users. A group may be generated by auser of the social networking system 140 identifying users associatedwith the group 140 or the social networking system 140 may generate oneor more groups based on characteristics associated with users of thesocial networking system 140. Additionally, a user's interactions with agroup are identified in the action log 220 or in the group store 230 byassociating a group identifier with information describing aninteraction with the group.

The social networking system 140 includes a topic extraction engine 235,which identifies one or more topics associated with objects in thecontent store 210 or with groups in the group store 230. To identifytopics associated with content items, the topic extraction engine 235identifies anchor terms included in a content item and determines ameaning of the anchor terms as further described in U.S. applicationSer. No. 13/167,701, filed Jun. 24, 2011, which is hereby incorporatedby reference in its entirety. For example, the topic extraction engine235 determines one or more topics associated with a content itemmaintained in the content store 210. The one or more topics associatedwith a content item are stored and associated with an object identifiercorresponding to the content item. In various embodiments, associationsbetween object identifiers and topics are stored in the topic extractionengine 240 or in the content store 210 to simplify retrieval of one ormore topics associated with an object identifier or retrieval of objectidentifiers associated with a specified topic. Structured informationassociated with a content item may also be used to extract a topicassociated with the content item.

To identify topics associated with a group, the topic extraction engine235 identifies content items associated with the group based oninformation included in the group store 230 and determines topicsassociated content items associated with the group based on anchor termsincluded in the content items as described above. In one embodiment, thetopic extraction engine 235 associates topics with a group that areassociated with at least a threshold number or threshold percentage ofcontent items associated with the group. Alternatively, the topicextraction engine ranks topics based on a frequency with which thetopics are associated with content items associated with a group andassociates topics having at least a threshold position in the rankingwith the group. Topics associated with a group may be stored in thegroup store 230 along with the group's group identifier.

The group selection module 240 identifies one or more groups having atleast a threshold likelihood of being relevant to a user, allowing theuser to more easily identify groups associated with content with whichthe user is likely to interact or groups including users with which theuser is likely to interact of interest. Identifying groups for a userallows the social networking system 140 to encourage the user tointeract with a broader range of content items or users, which increasesthe amount of interaction between the user and the social networkingsystem 140. In one embodiment, the group selection module 240 determinesa score for various groups, where a score for a group is based on amodel determining a likelihood of the user interacting with the groupwithin a specified time interval. A score for a group is based on amodel determining a likelihood of the user interacting with the groupwithin a specified time interval. Various interactions between the userand other groups maintained by the social networking system are used todetermine the score for a group. For example, the user's interactionswith groups having at least a threshold number of characteristicsmatching or similar to a group are used to determine the score for thegroup. Examples of interactions used to determine the score for a groupinclude the user providing one or more content items to an additionalgroup with similar characteristics to the group for presentation tousers associated with the additional group, the user commenting oncontent items associated with an additional group with similarcharacteristics to the group, the user sharing content items associatedwith an additional group having similar characteristics to the group,and the user indicating a preference for a content item associated withan additional group having similar characteristics to the group.

Additionally, the score associated with the group is based in part oninteractions where the user accessed content items associated with oneor more groups having similar characteristics to the group. For example,if the user views a content item associated with an additional grouphaving similar characteristics to the group for at least a thresholdlength of time, the social networking system identifies an interactionwhere the user has viewed the content item. A frequency with which theuser views content items associated with groups having similarcharacteristics to the group or a number of times the user views contentitems associated with groups having similar characteristics to the groupis used when determining the score for the group. Accounting forinteractions where the user provides content to groups as well asinteractions where the user passively views content associated withgroups increases the likelihood of the group selection module 240identifying a group with which the user is likely to interact byaccounting for a broader range of interactions when determining scoresfor groups.

Based on the scores associated with various groups, the group selectionmodule 240 selects one or more groups for identification to the user.For example, the group selection module 240 ranks groups based on theirassociated scores and selects one or more groups having at least athreshold position in the ranking. Alternatively, the group selectionmodule 240 selects one or more groups associated with at least athreshold score. Information describing the selected groups iscommunicated from the social networking system 140 to a client device110 associated with the user. The information may be presented in anorder based at least in part on the scores associated with selectedgroups to allow the user to more easily identify selected groups withhigher scores, which increases the likelihood of the user identifying agroup with which the user will subsequently interact.

In some embodiments, the group selection module 240 applies one or morerules when selecting groups to select groups satisfying differentcriteria. For example, the group selection module 240 identifiesmultiple sets of groups form the group store 230 using various criteria,with each set including groups satisfying one or more criteriaassociated with the set. Example criteria associated with a set include:a location, a user, information describing additional social networkingsystem users, types of connections between the user and additionalusers, or any other suitable information. For example, a set includesgroups associated with a location specified by criteria associated withthe set or a set includes groups including users having a specific typeof connection to a user specified by criteria associated with the set.When selecting the groups, the group selection module 240 applies one ormore rules specifying a minimum number of criteria associated withdifferent sets. Alternatively, scores associated with a group may bemodified based on criteria associated with a set including the group andcriteria associated with sets including previously selected groups. Forexample, if a group is included in a set that also includes at least athreshold number of previously selected groups, the score of the groupis decreased or a position of the group in a ranking is reduced.Alternatively, the group selection module 240 ranks candidate groupsbased on their associated scores and penalizes a ranking of a candidategroup if it is included in a set that also includes another candidategroup having a higher ranking than the group. As another example, thegroup selection module 240 generates different rankings for each set ofgroups, with a ranking for a set based on scores of groups included inthe set. A threshold number of groups are selected from at least athreshold number of sets, based on the ranking for each set, to providethe user with different groups associated with differentcharacteristics. Selection of groups is further described below inconjunction with FIG. 3.

The web server 245 links the social networking system 140 via thenetwork 120 to the one or more client devices 110, as well as to the oneor more third party systems 130. The web server 245 serves web pages, aswell as other content, such as JAVA®, FLASH®, XML and so forth. The webserver 245 may receive and route messages between the social networkingsystem 140 and the client device 110, for example, instant messages,queued messages (e.g., email), text messages, short message service(SMS) messages, or messages sent using any other suitable messagingtechnique. A user may send a request to the web server 245 to uploadinformation (e.g., images or videos) that are stored in the contentstore 210. Additionally, the web server 240 may provide applicationprogramming interface (API) functionality to send data directly tonative client device operating systems, such as IOS®, ANDROID™, WEBOS®or BlackberryOS.

Identifying Groups for Recommendation to a Social Networking System User

FIG. 3 is a flowchart of one embodiment of a method for identifyinggroups of users to a requesting user of a social networking system 140.In other embodiments, the method may include different and/or additionalsteps than those shown in FIG. 3. Additionally, steps of the method maybe performed in different orders than the order described in conjunctionwith FIG. 3.

The social networking system 140 stores information identifying variousgroups of users. As described above in conjunction with FIG. 3, a groupincludes a plurality of users of the social networking system 140 and isassociated with a group identifier uniquely identifying the group. Oneor more identifiers are associated with a group identifier to identifyusers of social networking system included in the group corresponding tothe group identifier. Other information may be associated with a groupidentifier, such as a name identifying a group corresponding to thegroup identifier, a description associated with the group, descriptiveinformation associated with the group (e.g., a location), topicsassociated with the group, a user that created the group, or othersuitable information. As described above in conjunction with FIG. 2, oneor more content identifiers specifying content items are associated witha group identifier to identify content items associated with a groupassociated with the group identifier. A group may be generated by a userof the social networking system 140 identifying users associated withthe group 140 or the social networking system 140 may generate one ormore groups based on characteristics associated with users of the socialnetworking system 140. Interactions associated with a group, such asinteractions between various users and the group, are also stored by thesocial networking system 140 by associating the group identifier with adescription of an interaction along with user identifiers of one or moreusers associated with the interaction.

A request to identify one or more groups is received 305 from arequesting user of the social networking system 140. For example, therequest is a search query including one or more search terms compared toinformation associated with groups by the social networking system 140.Alternatively, the request is a request for content to be presented tothe requesting user. As another example, the request is a more generalrequest from the requesting user to identify one or more groups withwhich the user is not currently associated. The request includesinformation identifying the requesting user, such as a user identifierassociated with the requesting user, and may also include one or morecharacteristics of groups specified by the requesting user (e.g.,location, topic, connection between the requesting user and usersassociated with the group).

Using information identifying the requesting user from the request, thesocial networking system 140 identifies 310 interactions associated withthe requesting user where the requesting user provided content to one ormore groups. Interactions, or actions, associated with a user identifierof the requesting user, associated with a group identifier, andspecifying one or more types of interactions are identified 310. Aninteraction where the requesting user provided content to the group maybe any interaction where the requesting user provided the socialnetworking system 140 with content that is associated with a group.Example interactions where the requesting user provided content to agroup include: the requesting user providing a content item to a group,the requesting user indicating a preference for a content itemassociated with a group, the requesting user sharing a content itemassociated with a group with one or more additional users, therequesting user checking-in to an event associated with a group, therequesting user communicating a request to join a group to another useror any other suitable interaction.

Similarly, the social networking system 140 identifies 315 interactionsassociated with the user where the user accessed content associated witha group. The social networking system 140 stores information describingadditional types of interactions where users viewed content associatedwith a group, allowing the social networking system 140 to maintaininformation describing passive interaction with content associated withvarious groups. For example, the social networking system 140 stores aninteraction associated with a user and with a group when the useraccesses a content item associated with the group via a client device110 for at least a threshold length of time or stores an interactionwhen at least a threshold amount of a content item associated with agroup is presented by a client device 110. In various embodiments, anapplication associated with the social networking system 140 andexecuting on a client device 110 communicates a user identifier, acontent item identifier, and description of an interaction to the socialnetworking system 140 when the user accesses content for a thresholdtime interval or views at least a threshold amount of a content item.The social networking system 140 stores the descriptions (e.g., in theaction log 220) to maintain information describing users accessing orviewing content items.

Based on the interactions where the user provided content to a group andthe interactions where the user accessed content associated with agroup, the social networking system determines 320 scores associatedwith a set of groups. The social networking system 140 identifies theset of groups as groups with which the user has at least a thresholdlikelihood of interacting within a time interval. For example, the setof groups includes groups with which the user has at least a thresholdlikelihood of interacting during a 24 hour interval. To determine thelikelihood of a user interacting with a group within the time interval,the social networking system 140 identifies characteristics associatedwith the group (e.g., a topic associated with the group, a locationassociated with the group, etc.) and identifies one or more groups withwhich the user previously interacted having characteristics matching, orsimilar to, the characteristics associated with the group. Based oninteractions where the user accessed content associated with one or moreof the identified groups and interactions where the user providedcontent to one or more of the identified groups, the social networkingsystem 140 determines the likelihood of the user interacting with thegroup. For example, the social networking system 140 applies a model tothe interactions where the user accessed content associated with one ormore of the identified groups and the interactions where the userprovided content to one or more of the identified groups to determine afrequency with which the user performs an interaction with theidentified groups. The likelihood of the user interacting with the groupduring a time interval is based on the determined frequency, and if thelikelihood is at least a threshold value, the social networking system140 includes the group in the set of groups. Characteristics of thegroup and the one or more identified groups having matching or similarcharacteristics of the group may also be used to determine thelikelihood of the user interacting with the group during the timeinterval. For example, a number or percentage of characteristics of anidentified group matching characteristics of the group is used to weightinteractions between the user and the identified group when determiningthe likelihood of the user interacting with the group during the timeinterval.

A score associated with a group provides a measure of a likelihood thatthe user interacts with the group by providing content to the group orby accessing content associated with the group. In various embodiments,the social networking system 140 identifies a group, determines one ormore characteristics associated with the identified group, andidentifies one or more additional groups having at least a thresholdnumber or percentage of characteristics matching, or similar to,characteristics associated with the identified group. Examplecharacteristics associated with a group include: one or more topicsassociated with the group, a location associated with the group, usersassociated with the group, a user creating the group, and connectionsbetween the requesting user and users associated with the group. A modelthat associates values with different types of interactions is appliedto interactions between the requesting user and the one or moreadditional groups to determine 320 a score associated with theidentified group based on the values. In different embodiments, valuesassociated with different types of interactions may be differentlyweighted, so different types of interactions differently contribute tothe score associated with a group. Additionally, the model may weightvalues associated with interactions between the requesting user andvarious groups based on a number or percentage of characteristics of anadditional group associated with an interaction matching or similar tocharacteristics of the identified group when determining 320 a scoreassociated with the additional group. Prior interactions between therequesting user and the identified group, if any, may also be used bythe model when determining 320 the score associated with the identifiedgroup, and may be weighted higher than interactions between therequesting user and an additional group having characteristics matching,or similar to, the identified group.

Based on the scores associated with groups in the set of groups, thesocial networking system 140 selects 325 one or more groups. In oneembodiment, the social networking system 140 ranks groups in the set ofgroups based on their associated scores and selects 325 groups having atleast a threshold position in the ranking. Alternatively, the socialnetworking system 140 selects 325 one or more groups associated with atleast a threshold score.

When selecting 325 the one or more groups, the social networking system140 may also account for one or more characteristics of groups in theset of groups, so groups having a variety of characteristics areselected 325. For example, the social networking system 140 applies oneor more rules to groups in the set, with different rules specifyingcriteria based on different characteristics of groups. In oneembodiment, if a threshold number of groups having a characteristic areselected 325, scores associated with other groups having thecharacteristic are reduced, or positions of other groups having thecharacteristic in the ranking of groups are reduced, to decrease thelikelihood that additional groups having the characteristic are selected325. An amount by which the scores or positions of other groups havingthe characteristic are decreased may be based on a number of previouslyselected groups having the characteristic. Alternatively, scores orpositions in the ranking associated with groups that have not previouslybeen selected 325, or have not been selected 325 within a threshold timeinterval, are increased.

In one embodiment, the social networking system 140 identifies multiplesets of candidate groups, with each set associated with one or morecriteria and including groups having characteristics satisfying the oneor more criteria associated with the set. Example criteria associatedwith a set include: a topic, a location, characteristics of usersassociated with a group, types of connections between additional usersand the user, and a distance between a location associated with the userand a location associated with a group. FIG. 4 is a process flow diagramof the social networking system 140 identifying sets of candidategroups. In the example shown by FIG. 4, the social networking system 140identifies multiple sets of candidate groups from the group store 230,with each set of groups associated with one or more criteria. As shownin FIG. 4, set 405A of candidate groups includes groups associated witha specific location, set 405B of candidate groups includes groupsassociated with a specific topic, and set 405C of candidate groupsincludes groups associated with one or more users having a specific typeof connection to the user. In different embodiments, any suitablecriteria may be associated with a set of candidate groups, and anynumber of sets of candidate groups may be generated based on informationfrom the group store 230 One or more selected groups 410 are determinedfrom the sets 405A, 405B, 405C of candidate groups, as further describedbelow. In the example of FIG. 4, the selected groups 410 include a groupfrom each of set 405A, set 405B, and set 405C.

For example, the social networking system 140 ranks candidate groups,which are each included in one or more sets of groups, based on thescores associated with the candidate groups, while accounting for setsincluding different candidate groups. If a candidate group and anadditional candidate group are both included in a common set, theranking is modified to lower a position of the additional candidategroup in the ranking relative to the candidate group. For example, aposition of the additional candidate group in the ranking is lowered. Inthe example from FIG. 4, a ranking of group included in the set 405A ofcandidate groups is reduced if another group included in the set 405A ofcandidate groups has a higher position in the ranking. This reduces thelikelihood of the selected groups 410 including a disproportionatenumber of sources associated with the specified location associated withthe set 450A of candidate groups. Hence, a position in the ranking of agroup is lowered if the group is included in the same group as anothergroup having a higher position in the ranking. By penalizing a groupincluded in a set that also includes another group with a higherposition in the ranking, the social networking system 140 includesgroups from a variety of sets of groups in the selected groups. Becausedifferent sets are associated with different criteria, different setsinclude groups having different characteristics, selecting 325 groupsincluded in different sets allows groups with a wider range ofcharacteristics to be selected 325. In some embodiments, a thresholdnumber of groups from a threshold number of sets are selected 325.

Referring back to FIG. 3, the social networking system 140 mayalternatively select 325 a threshold number of groups having differentcharacteristics based on one or more rules. For example, the socialnetworking system 140 selects 325 a threshold number of groupsassociated with maximum scores relative to other groups having aspecific characteristic and also selects a threshold number ofadditional groups associated with maximum scores relative to othergroups having an additional characteristic. In another embodiment, thesocial networking system 140 generates different rankings associatedwith different characteristics, so a ranking includes groups associatedwith a particular characteristic ranked based on their associatedscores. Based on one or more rules, a threshold number of groups areselected from at least a threshold number of rankings associated withdifferent characteristics.

Information identifying the selected groups is communicated 330 from thesocial networking system 140 to a client device 110 associated with therequesting user that presents the information to the requesting user.For example, names associated with one or more of the selected groupsare communicated 330 to the client device 110. Additional information,such as one or more users connected to the requesting user andassociated with a selected group, a location associated with a selectedgroup, or content associated with a selected group (e.g., an imageassociated with the selected group) may be communicated 330 to theclient device 110 for presentation. The information communicated 330 tothe client device 110 may also include an order associated with theselected groups. For example, the selected groups are ordered based ontheir associated scores so they are presented by the client device 110based on the order. In some embodiments, selected groups having higherscores have higher positions in the order. If the received request was asearch query, the selected groups may be communicated to the clientdevice 110 along with an order based on the scores associated with theselected groups; the selected groups are presented based on the orderrather than an amount of similarity between topics, names, or otherinformation associated with the selected groups and search terms in thesearch query. This allows the selected groups to be presented based on alikelihood of the requesting user interacting with various selectedgroups rather than similarity between characteristics of the selectedgroups and search terms to increase the likelihood of the requestinguser identifying a group with which the requesting user is likely tointeract.

In some embodiments, the information communicated 330 to the clientdevice 110 organizes the selected groups based on characteristicsassociated with the selected groups. For example, multiple collectionsof selected groups are included in the information communicated to theclient device 110, with each collection associated with acharacteristic. In one embodiment, a collection includes selected groupsassociated with locations within a threshold distance of a locationassociated with the requesting user (e.g., a current location associatedwith the requesting user, a hometown associated with the requestinguser). Selected groups having a characteristic are included in acollection associated with the characteristic. The client device 110 mayinclude multiple pages or sections each associated with a collection andmay present additional information associated with selected groupsincluded in a collection selected by the user. For example, a collectionmay include selected groups associated with a particular location,selected groups associated with at least a threshold number ofadditional users connected to the requesting user, selected groupsassociated with a specific topic, or selected groups associated with anysuitable characteristic. Additionally, the requesting user may providean input to the client device 110 to filter the selected groups based oncharacteristics associated with the selected groups, allowing therequesting user to view selected groups having a specific characteristicor having a specific combination of characteristics.

FIG. 5A shows an example interface 505 of an application executing on aclient device 110 for presenting groups to a user. The user may interactwith the interface 505 to identify new groups with which the user islikely to interact. The interface 505 includes information describingselected groups 510A. The selected groups 510A are identified fromgroups maintained by the social networking system 140 as described abovein conjunction with FIG. 3, and may be ordered when presented in theinterface 505 as described above in in conjunction with FIG. 3 and FIG.4. Information describing a selected group 510A that is presented to theuser may include information identifying the group, such as the name ofthe group, or information identifying members in the group, such asadditional users connected to the user interacting with the interface505 who are also members of the group. In the example of FIG. 5A theinterface 505 also includes a search tool 515. When the user interactswith the search tool 515 causes the application to present the user witha search interface 520, as shown in the example of FIG. 5B, or withanother suitable interface for providing search terms.

As shown in FIG. 5B, the user may enter text (a search query) into asearch bar 525 included in the search interface 520 to identifycharacteristics of groups. For example, the social networking system 140identifies groups having one or more characteristics (e.g., topic,title, location, description, etc.) matching or similar to the providedsearch query. The social networking system 140 provides the applicationwith information describing selected groups 510B having characteristicsmatching or similar to the search query for presentation to the user viathe search interface 520. As described above in conjunction with FIG. 3,the information describing the selected groups 510B may be ordered basedon their associated scores, which indicate the likelihood of the userperforming at least a threshold number of interactions with the selectedgroups during a specified time interval, rather than on a measure ofsimilarity between the characteristics of the selected groups and thesearch query. In other embodiments, the information describing theselected groups 510B may be ordered in any other suitable manner.Example information describing the selected groups 510B is furtherdescribed above in conjunction with FIG. 5A. In the example of FIG. 5Bthe user enters a search query of “Cars” into the search bar 525, andthe search interface 520 presents information describing selected groups510B matching or similar to the search query of “Cars.”

SUMMARY

The foregoing description of the embodiments has been presented for thepurpose of illustration; it is not intended to be exhaustive or to limitthe patent rights to the precise forms disclosed. Persons skilled in therelevant art can appreciate that many modifications and variations arepossible in light of the above disclosure.

Some portions of this description describe the embodiments in terms ofalgorithms and symbolic representations of operations on information.These algorithmic descriptions and representations are commonly used bythose skilled in the data processing arts to convey the substance oftheir work effectively to others skilled in the art. These operations,while described functionally, computationally, or logically, areunderstood to be implemented by computer programs or equivalentelectrical circuits, microcode, or the like. Furthermore, it has alsoproven convenient at times, to refer to these arrangements of operationsas modules, without loss of generality. The described operations andtheir associated modules may be embodied in software, firmware,hardware, or any combinations thereof.

Any of the steps, operations, or processes described herein may beperformed or implemented with one or more hardware or software modules,alone or in combination with other devices. In one embodiment, asoftware module is implemented with a computer program productcomprising a computer-readable medium containing computer program code,which can be executed by a computer processor for performing any or allof the steps, operations, or processes described.

Embodiments may also relate to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, and/or it may comprise a general-purpose computingdevice selectively activated or reconfigured by a computer programstored in the computer. Such a computer program may be stored in anon-transitory, tangible computer readable storage medium, or any typeof media suitable for storing electronic instructions, which may becoupled to a computer system bus. Furthermore, any computing systemsreferred to in the specification may include a single processor or maybe architectures employing multiple processor designs for increasedcomputing capability.

Embodiments may also relate to a product that is produced by a computingprocess described herein. Such a product may comprise informationresulting from a computing process, where the information is stored on anon-transitory, tangible computer readable storage medium and mayinclude any embodiment of a computer program product or other datacombination described herein.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the patent rights be limitednot by this detailed description, but rather by any claims that issue onan application based hereon. Accordingly, the disclosure of theembodiments is intended to be illustrative, but not limiting, of thescope of the patent rights, which is set forth in the following claims.

What is claimed is:
 1. A method comprising: storing, in a socialnetworking system, one or more groups, each group including one or moreusers of the social networking system; receiving a request to identifyone or more groups from a requesting user of the social networkingsystem; retrieving content sharing interactions where the requestinguser provided content to the one or more groups; retrieving contentaccess interactions where the requesting user accessed contentassociated with one or more groups; identifying a set of one or moregroups with which the user has at least a threshold likelihood ofinteracting during a time interval based at least in part on theinteractions where the requesting user provided content to the one ormore groups and the interactions where the requesting user accessedcontent associated with one or more groups; determining scoresassociated with the set of the one or more groups, a score associatedwith a group based at least in part on the interactions where therequesting user provided content to the one or more groups and theinteractions where the requesting user accessed content associated withone or more groups; selecting one or more groups from the set of the oneor more groups based at least in part in part on the scores; andcommunicating the selected one or more groups to a client deviceassociated with the requesting user.
 2. The method of claim 1, whereindetermining scores associated with the set of the one or more groupscomprises: identifying a group from the set of the one or more groups;identifying one or more characteristics associated with the identifiedgroup; determining one or more groups associated with at least athreshold number of characteristics matching the identified one or moretopics; and determining a score associated with the identified groupbased at least in part on interactions where the requesting userprovided content to the determined one or more groups and interactionswhere the requesting user accessed content associated with thedetermined one or more groups.
 3. The method of claim 2, wherein acharacteristic comprises a topic.
 4. The method of claim 1, wherein therequest comprises a search query including one or more search terms. 5.The method of claim 4, wherein communicating the selected one or moregroups to the client device associated with the requesting usercomprises: communicating results including the selected one or moregroups in an order based at least in part on the scores associated withthe selected one or more groups.
 6. The method of claim 1, wherein therequest comprises a request for content.
 7. The method of claim 1,wherein the selected one or more groups are communicated to a clientdevice associated with the requesting user in an order based at least inpart on the scores associated with the selected one or more groups. 8.The method of claim 1, wherein an interaction where the requesting userprovided content to a group including one or more users is selected froma group consisting of: providing a content item to the group includingone or more users, indicating a preference for a content item associatedwith the group including one or more users, sharing the content itemassociated with the group including one or more users with one or moreadditional users, and any combination thereof.
 9. The method of claim 1,wherein an interaction where the requesting user accessed contentassociated with a group including one or more users is an indication therequesting user accessed a content item associated with the group for atleast a threshold time interval.
 10. The method of claim 1, wherein aninteraction where the requesting user accessed content associated with agroup including one or more users is an indication the requesting useraccessed at least a threshold amount of content from a content itemassociated with the group.
 11. A method comprising: storing, in a socialnetworking system, one or more groups, each group including one or moreusers of the social networking system; receiving a request to identifyone or more groups from a requesting user of the social networkingsystem; identifying a set of one or more groups with which the user hasat least a threshold likelihood of interacting during a time intervalbased at least in part on the interactions where the requesting userprovided content to the one or more groups and the interactions wherethe requesting user accessed content associated with one or more groups;determining scores associated with the set of the one or more groups, ascore associated with a group based at least in part on interactionswhere the requesting user provided content to the one or more groups andinteractions where the requesting user accessed content associated withone or more groups; selecting one or more groups from the set of the oneor more groups based at least in part in part on the scores; andcommunicating the selected one or more groups to a client deviceassociated with the requesting user.
 12. The method of claim 11, whereindetermining scores associated with the set of the one or more groupscomprises: identifying a group from the set of the one or more groups;identifying one or more characteristics associated with the identifiedgroup; determining one or more groups associated with at least athreshold number of characteristics matching the identified one or morecharacteristics; and determining a score associated with the identifiedgroup based at least in part on interactions where the requesting userprovided content to the determined one or more groups and interactionswhere the requesting user accessed content associated with thedetermined one or more groups.
 13. The method of claim 12, wherein acharacteristic is selected from a group consisting of: a locationassociated with the group, a user creating the group, connectionsbetween the user and users associated with the group, and anycombination thereof.
 14. The method of claim 11, wherein the requestcomprises a search query including one or more search terms.
 15. Themethod of claim 14, wherein communicating the selected one or moregroups to the client device associated with the requesting usercomprises: communicating results including the selected one or moregroups in an order based at least in part on the scores associated withthe selected one or more groups.
 16. The method of claim 11, wherein aninteraction where the requesting user provided content to a groupincluding one or more users is selected from a group consisting of:providing a content item to the group including one or more users,indicating a preference for a content item associated with the groupincluding one or more users, sharing the content item associated withthe group including one or more users with one or more additional users,and any combination thereof.
 17. The method of claim 11, wherein aninteraction where the requesting user accessed content associated with agroup including one or more users is an indication the requesting useraccessed a content item associated with the group for at least athreshold time interval.
 18. The method of claim 11, wherein aninteraction where the requesting user accessed content associated with agroup including one or more users is an indication the requesting useraccessed at least a threshold amount of content from a content itemassociated with the group.
 19. A computer program product comprising anon-transitory computer readable storage medium having instructionsencoded thereon that, when executed by a processor, cause the processorto: store, in a social networking system, one or more groups, each groupincluding one or more users of the social networking system; receive arequest to identify one or more groups from a requesting user of thesocial networking system; identify a set of one or more groups withwhich the user has at least a threshold likelihood of interacting duringa time interval based at least in part on the interactions where therequesting user provided content to the one or more groups and theinteractions where the requesting user accessed content associated withone or more groups; determine scores associated with the set of the oneor more groups, a score associated with a group based at least in parton interactions where the requesting user provided content to the one ormore groups and interactions where the requesting user accessed contentassociated with one or more groups; select one or more groups from theset of the one or more groups based at least in part in part on thescores; and communicate the selected one or more groups to a clientdevice associated with the requesting user.
 20. The computer programproduct of claim 19, wherein determine scores associated with the set ofthe one or more groups comprises: identify a group from the set of theone or more groups; identify one or more characteristics associated withthe identified group; determine one or more groups associated with atleast a threshold number of characteristics matching the identified oneor more characteristics; and determine a score associated with theidentified group based at least in part on interactions where therequesting user provided content to the determined one or more groupsand interactions where the requesting user accessed content associatedwith the determined one or more groups.